<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Sander
 * Date: 26-6-11
 * Time: 10:07
 * To change this template use File | Settings | File Templates.
 */

require_once(Config::acquire('Controller', null, 'controller'));
require_once(Config::acquire("Leverancier", MODEL));
require_once(Config::acquire("Licentie", MODEL));
class SoftwareController extends Controller {

    /**
     * Index:
     * Hier wordt in het kort info gegeven.
     * @return void
     */
    public function index() {
        $this->view->render('Software.tpl');
    }

     /**
     * Overzicht:
     * Hier wordt een ovverzicht weergegeven en bij klikken op ID ga je naar detail
     * @return void
     */


    public function overzicht() {
        $list = array();

        require_once(Config::acquire('Software', MODEL));
        foreach (Software::readAll() as $software)
            $list[] = $software->toArray();
        $this->view->assign('detail_link', SDS::getURL('Software', 'detail'));
        $this->view->assign('leverancier_link', SDS::getURL('Leverancier', 'detail'));
        $this->view->assign("softwarelijst", $list);
        $this->view->render('Software_List.tpl');
    }

        /**
        * Detail:
        * Gedetaileerde omschrijving van een employee.
        * Bij klikken op wijzigen of verwijderen ga je naar betreffende onderdeel toe.
        * @return void
        */


    public function detail() {
        require_once(Config::acquire('Software', MODEL));
        $params = UrlDecoder::get_Params();

        if (is_null($params[0]))
            SDS::redirect('Software', "overzicht");
        $id = $params[0];
        foreach (Software::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        $this->view->assign('leverancier_link', SDS::getURL('Leverancier', 'detail'), array($params[0]));
        $this->view->assign('licentie_link', SDS::getURL('Licentie', 'detail'), array($params[0]));
        $this->view->assign("form_URL", SDS::getURL('Software', 'edit', array($id)));
        $this->view->assign('wijzig_url', SDS::getURL('Software', 'bewerken', array($params[0])));
        $this->view->assign('verwijder_url', SDS::getURL('Software', 'delete', array($params[0])));
        $this->view->render('Software_Detail.tpl');
    }

    /**
     * Bewerken:
     * het terughalen van de oude opties en de mogelijkheid om deze te veranderen.
     * wordt direct doorgestuurd naar het formulier.
     *
     * @return void
     */

    public function bewerken() {
        $leverancierIDs = array();
        $licentieIDs = array();
        require_once(Config::acquire('Software', MODEL));
        $params = UrlDecoder::get_Params();
        if (!isset($params[0]))
            SDS::redirect("Software", "overzicht");
        $id = $params[0];
        foreach (Software::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        foreach (Leverancier::readAll() as $leverancier) {
            $leverancierIDs[$leverancier->getID()] = $leverancier->getNaam();
        }
        foreach (Licentie::readAll() as $licentie) {
            $licentieIDs[$licentie->getID()] = $licentie->getOmschrijving();
        }

        $this->view->assign('licenties', $licentieIDs);
        $this->view->assign('leveranciers', $leverancierIDs);
        $this->view->assign('form_URL', SDS::getURL('Software', 'update', array($id)));
        $this->view->assign('SoftwareTitle', "Software wijzigen");
        $this->view->render("Software_Change.tpl");
    }

    /**
     * Toevoegen:
     * Gegevens  worden klaargezet om in een formulier te worden gezet
     * @return void
     */

    public function toevoegen() {
        $leverancierIDs = array();
        foreach (Leverancier::readAll() as $leverancier) {
            $leverancierIDs[$leverancier->getID()] = $leverancier->getNaam();
        }
        foreach (Licentie::readAll() as $licentie) {
            $licentieIDs[$licentie->getID()] = $licentie->getOmschrijving();
        }

        $this->view->assign('licenties', $licentieIDs);
        $this->view->assign('leveranciers', $leverancierIDs);
        $this->view->assign('form_URL', SDS::getURL('Software', 'add', null));
        $this->view->render("Software_Change.tpl");
    }

    /**
    * Add:
    * Hier wordt het invul formulier aangeroepen om een dienst toe te voegen
     * @return void
     */

    public function add() {
        require_once(Config::acquire('Software', MODEL));
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        Software::create(null,
                         $_POST['Naam'],
                         $_POST['Afkorting'],
                         $_POST['Omschrijving'],
                         $_POST['VersionID'],
                         Leverancier::read($_POST['Leverancier']),
                         $_POST['AanschafDatum'],
                         Licentie::read($_POST['Licentie']))->update();
        SDS::redirect("Software", "overzicht");
    }

    /**
     * Delete:
     * Hier wordt een bestaand gegeven gedeleted op moment dat de functie wordt aangeroepen
     * @return void
     *
     */

    public function delete() {
        require_once(Config::acquire('Software', MODEL));
        $id = UrlDecoder::get_Params();
        if (isset($id[0])) {
            Software::read($id[0])->delete();
            SDS::redirect("Software", "overzicht", null);
        }
    }

    /**
    * Update:
    * Geeft de gegevens door aan de database en zet deze er in.
    * @return void
    */

    public function update() {
        require_once(Config::acquire('Software', MODEL));
        require_once(Config::acquire('Leverancier', MODEL));
        require_once(Config::acquire('Licentie', MODEL));
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        $params = UrlDecoder::get_Params();
        if (isset($params[0])) {
            $software = Software::read($params[0]);
            $software->setNaam($_POST['Naam']);
            $software->setAfkorting($_POST['Afkorting']);
            $software->setOmschrijving($_POST['Omschrijving']);
            $software->setVersionid($_POST['VersionID']);
            $software->setLeverancier(Leverancier::read($_POST['Leverancier']));
            $software->setAanschafdatum($_POST['AanschafDatum']);
            $software->setLicentie(Licentie::read($_POST['Licentie']));
            $software->update();

            SDS::redirect("Software", "detail", $params[0]);
        }
        SDS::redirect("Software", "overzicht", null);
    }
}